package site.wanjiahao.sort.compare;

import site.wanjiahao.sort.Sort;

public class BubbleSort2<E extends Comparable<E>> extends Sort<E> {


    @Override
    protected void sort() {
        // 可以发现如果第一次比较已经排好顺序后，后面还需要比较，这显然是不必要的。虽然没有进行数据的交换
        for (int end = array.length - 1; end >= 1 ; end--) {
            boolean isSort = true;
            for (int begin = 1; begin <= end; begin++) {
                if (cmp(begin - 1, begin) > 0) {
                    // 互相交换位置
                    swap(begin - 1, begin);
                    isSort = false;
                }
            }
            if (isSort) break;
        }
    }
}
